/**
 * 
 */
package t4j.interfaces.extend;

import java.lang.reflect.Method;

interface Monster{
	void menace();
}

interface DragerousMonster extends Monster{
	void destroy();
}

interface Lethal{
	void kill();
}

class DragonZilla implements DragerousMonster{

	@Override
	public void menace() {		
		System.out.println(getClass().getSimpleName()+".menace()" );
	}

	@Override
	public void destroy() {
		System.out.println(getClass().getSimpleName()+".destroy()");
	}
	
}

interface Vampire extends DragerousMonster,Lethal{
	void drinkBlood();
}

class VeryBadVampire implements Vampire{

	
	@Override
	public void destroy() {
		System.out.println(getClass().getSimpleName()+".destroy()" );
		
	}

	@Override
	public void menace() {
	
		System.out.println(getClass().getSimpleName()+".menace()" );
	}

	@Override
	public void kill() {
		System.out.println(getClass().getSimpleName()+".kill()" );
	}

	@Override
	public void drinkBlood() {
	
		System.out.println(getClass().getSimpleName()+".drinkBlood()" );
	}
	
}

public class HorrorShow {
	
	static void u(Monster b){b.menace();}
	static void v(DragerousMonster d){
		d.menace();
		d.destroy();
	}
	static void w(Lethal l){l.kill();}
	
	public static void main(String[] args) {
		DragerousMonster barney = new DragonZilla();
		
		u(barney);
		
		v(barney);
		
		Vampire vlad = new VeryBadVampire();
		
		u(vlad);
		
		v(vlad);
		
		w(vlad);
		
		
	}
}
